<!--
  Copyright 2019 Hackware SpA <human@hackware.cl>
  This file is part of "Hackware Userland" and licensed under the terms
  of the GNU Affero General Public License version 3, or (at your option)
  a later version. You should have received a copy of this license along
  with the software. If not, see <https://www.gnu.org/licenses/>.
-->

<template>
  <div class="schema-form">
    <div
      v-for="(propertyObject, propertyName) in jsonSchema.properties"
      :key="propertyName"
      class="form-group"
    >
      <label :for="propertyName">
        {{ propertyObject.title }}
        {{ isRequired(propertyName) ? '*' : '' }}
      </label>
      <SchemaFormWidget
        :id="propertyName"
        :name="propertyName"
        :property="propertyObject"
        :required="isRequired"
      />
    </div>
  </div>
</template>

<script>
import SchemaFormWidget from './SchemaFormWidget.vue';

export default {
  name: 'SchemaForm',
  components: {
    SchemaFormWidget,
  },
  props: {
    jsonSchema: {
      type: Object,
      required: true,
    },
  },
  methods: {
    isRequired(propertyName) {
      return ('required' in this.jsonSchema) && this.jsonSchema.required.includes(propertyName);
    },
  },
};
</script>
